﻿using DocumentFormat.OpenXml.Lite.DrawingML.Base;
using DocumentFormat.OpenXml.Lite.DrawingML.Geometry;
using DocumentFormat.OpenXml.Lite.DrawingML.Types;
using DocumentFormat.OpenXml.Lite.Xml;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace DocumentFormat.OpenXml.Lite.DrawingML.Visual
{
    [XmlRoot("sp3d", Namespace = Constants.Main)]
    public class Shape3dProperties : XmlSerializable, IBody3dProperty
    {
        [Optional]
        [XmlAttribute("z", Form = XmlSchemaForm.Qualified)]
        public Nullable<long> ShapeDepth { get; set; }

        [Optional]
        [XmlAttribute("extrusionH", Form = XmlSchemaForm.Qualified)]
        public Nullable<long> ExtrusionHeight { get; set; }

        [Optional]
        [XmlAttribute("contourW", Form = XmlSchemaForm.Qualified)]
        public Nullable<long> ContourWidth { get; set; }

        [Optional]
        [XmlAttribute("prstMaterial", Form = XmlSchemaForm.Qualified)]
        public Nullable<ST_PresetMaterialType> PresetMaterialType { get; set; }

        [Optional]
        [XmlElement("bevelT", Namespace = Constants.Main)]
        public Bevel TopBevel { get; set; }

        [Optional]
        [XmlElement("bevelB", Namespace = Constants.Main)]
        public Bevel BottomBevel { get; set; }

        [Optional]
        [XmlElement("extrusionClr", Namespace = Constants.Main)]
        public Color.Color ExtrusionColor { get; set; }

        [Optional]
        [XmlElement("contourClr", Namespace = Constants.Main)]
        public Color.Color ContourColor { get; set; }

        [Optional]
        [XmlElement("extLst", Namespace = Constants.Main)]
        public ExtensionList ExtensionList { get; set; }

        public Shape3dProperties() { }
    }
}
